Taylorov polynóm

Nech funkcia $f$ je $n$-krát diferencovateľná v bode $a \in \mathbb{R}$. Potom Taylorovým polynómom stupňa $n$ funkcie $f$ v bode $a$ sa nazýva polynóm (v premennej $x$) $$ \sum_{i=0}^n \frac{f^{(i)}(a)}{i!} (x-a)^i = f(a) + f'(a) (x-a) + \frac{f''(a)}{2!} (x-a)^2 + \cdots + \frac{f^{(n)}(a)}{n!} (x-a)^n . $$ Špeciálne Taylorov polynóm v bode $a = 0$ má tvar $$ \sum_{i=0}^n \frac{f^{(i)}(0)}{i!} x^i = f(0) + f'(0) x + \frac{f''(0)}{2!} x^2 + \cdots + \frac{f^{(n)}(0)}{n!} x^n . $$

In [1]:
import numpy as np
%matplotlib inline
import matplotlib.pyplot as plt
from maux import *

Príklad

Zostrojenie Taylorových polynómov stupňa $n=0,\ldots,5$ pre funkciu $$y = \mathrm{e}^x$$ v bode $0$.

In [2]:
#### vstupné údaje
def f(X): return np.exp(X)
X = np.linspace(-1, 1, 6*10+1)

## derivácie v bode 0
def derivative(n): # n-tá derivácia
    return 1

## Taylorove polynómy v bode 0
def T(n, X): # n-tý Taylorov polynóm
    if n >= 0:
        return T(n-1, X) + derivative(n) * X**n / np.math.factorial(n)
    else:
        return np.zeros(len(X))

#### obrázok s jedným diagramom
fig, ax = plt.subplots()
fig.set_size_inches(12, 5)

### diagram
init_subplot(ax)
ax.set_title(r"Taylorove polynómy stupňa $n$ patriace funkcii $y = \mathrm{e}^x$ v bode $0$")

## graf funkcie
color = ax.plot(X, f(X), 'k', label="graf funkcie")[0].get_color()
ax.plot(0, f(0), 'o', c=color)
        
## grafy Taylorových polynómov
for n in range(0, 5+1):
    ax.plot(X, T(n, X), label="$n={}$".format(n))

## zvyšné nastavenia
ax.legend()
ax.grid()

### archivácia obrázka
#plt.savefig("ex05_1_1.png")

### samotné zobrazenie
plt.show()
plt.close('all') 

Príklad

To isté ako v predchadzajúcom príklade, len vykreslenie sa deje pomocou interaktívnych prvkov knižnice ipywidgets.

Dokumentácia:

In [3]:
#### vstupné údaje
def f(X): return np.exp(X)
X = np.linspace(-1, 1, 6*10+1)

## derivácie v bode 0
def derivative(n): # n-tá derivácia
    return 1

## Taylorove polynómy v bode 0
def T(n, X): # n-tý Taylorov polynóm
    if n >= 0:
        return T(n-1, X) + derivative(n) * X**n / np.math.factorial(n)
    else:
        return np.zeros(len(X))

#### obrázok s n-tým Taylorovým polynómom
def plot_taylor(n):
    fig, ax = plt.subplots()
    fig.set_size_inches(12, 5)
    init_subplot(ax)
    ax.set_title(r"Taylorov polynóm stupňa $n = {}$ patriaci funkcii $y = \mathrm{{e}}^x$ v bode $0$".format(n))
    color = ax.plot(X, f(X), label="funkcia")[0].get_color()
    ax.plot(0, f(0), 'o', c=color)
    ax.plot(X, T(n, X), label="polynóm")
    ax.set_ylim(0, 4.4)
    ax.legend()
    ax.grid()
    plt.show()
    plt.close('all')

#### interaktívne vykreslenie obrázka
import ipywidgets as widgets
widgets.interact(plot_taylor,n=widgets.IntSlider(min=0,max=5,step=1,value=0));

Úloha (7 bodov)

Zostrojte Taylorove polynómy stupňa $n=1,3,5,7$ pre funkciu $$y = \sin x$$ v bode $0$. Nakreslite ich grafy!

Úloha

Zostrojte Taylorove polynómy stupňa $n=0,2,4,6$ pre funkciu $$y = \cos x$$ v bode $0$. Nakreslite ich grafy!

Úloha (7 bodov)

Zostrojte Taylorove polynómy stupňa $n=0,1,2,3$ pre funkciu $$y = \log(1+x)$$ v bode $0$. Nakreslite ich grafy!

Úloha

Zostrojte Taylorove polynómy stupňa $n=0,1,2,3$ pre funkciu $$y = \frac{1}{1-x}$$ v bode $0$. Nakreslite ich grafy!